var express = require('express');

var router = express.Router();

var {movie_model,user_model} = require("../db/model")
var {aesDecrypt} = require("../utils/crypto")
var {FindOneData} = require("../db/index")
// 路由 根据不同的URL 匹配加载不同的数据资源 


// get get请求
// /   req.url 路径
// req 请求 request
// res 响应 response
// next 进入下一个中间件 
// res.render('index')


/* GET home page. */
router.get('/', function(req, res, next) {
  console.log(req.session)

  res.render('index', 
  { 
      title: 'Express' ,
      count:2114,
      word:"wh2114-daydayup",
      msg:"wh2114 - Are you OK?",
      
      html:"<h2>Wuhan2114 - TODO more for good JOB </h2>",
      list:["Node","Vue","Vue3.2","React","小程序"],

      username:req.session.username,
      userInfo:req.session.userInfo || {}
  }
  );    // 渲染 html 页面模板 
});

// 电影详情
router.get('/detail',(req,res)=>{
  const id = req.query.id;
  FindOneData({
    model:movie_model,
    query:{
      id:id 
    },
    callback(result){
      res.render('detail',{result})
    },
    res
  })
})

router.get('/mlist',(req,res)=>{
  var  query = req.query;
  console.log(query)
  var  sort = {}
  var  obj = {}
  if(query.keyword){  // 有keyword 就表明要做搜索 
    // 搜索
    obj = {
      $or:[
        {
          title:new RegExp(query.keyword)
        },
        {
          year:new RegExp(query.keyword)
        },
        {
          genres:new RegExp(query.keyword)
        },
        {
          'rating.average':new RegExp(query.keyword * 1)
        }
      ]
    }
  }else{
    sort = query;  
  }

  movie_model.find(obj,{})
  .sort(sort)  // 排序条件
  .then(result=>{
    // console.log(result)
    res.render('mlist',{
      result
    })
  })
  .catch(err=>{
    res.send('服务器异常')
  })
    
})

// 退出登录
router.get("/logout",(req,res)=>{
  req.session.destroy(()=>{
    res.redirect("/")
  })
})

router.get("/login",(req,res)=>{
  var username = req.query.username ? aesDecrypt(req.query.username): '';
   res.render('login',{
     username 
   })
})

router.get('/mine',(req,res)=>{
  res.render('mine')
})

router.get("/register",(req,res)=>{
  res.render('register')
})

router.get("/home",(req,res)=>{
  res.render('home')
})


router.get("/demo",(req,res)=>{
  res.send("demo - demo - demo ")
})

router.get('/test',(req,res)=>{
  res.send("<h2> Test - Test - Test </h2>")
})


router.get("/json",(req,res)=>{
  res.json({
    code:200,
    msg:'发送成功',
    result:null
  })
})

// all = GET && POST 
router.all("/list",(req,res)=>{
    res.json({
      code:200,
      url:req.url,  // 请求地址 
      headers:req.headers,  // 请求头 
      query:req.query,  // 查询参数 ?id=1234 
      result:null 
    })
})

// params :  路由参数
router.get("/goodone/:gid?",(req,res)=>{
  res.json({
    code:200,
    msg:"获取详情成功",
    result:null,
    params:req.params 
  })
})


router.get("/movie",(req,res)=>{
  movie_model.find({},{_id:0,title:1,year:1,genres:1})
  .sort({year:1})
  .then(result=>{
      res.json({
        code:200,
        msg:'获取电影数据成功',
        result:result 
      })
  })
  .catch(err=>{
    res.json({
      code:500,
      msg:'服务器异常',
      err
    })
  })
})

router.get("/userlist",(req,res)=>{
  user_model.find({},{})
  .then(result=>{
    res.json({
      code:200,
      msg:'获取用户数据成功',
      result:result 
    })
  })
  .catch(err=>{
    res.json({
      code:500,
      msg:'服务器异常',
      err,
    })
  })
})

// 浏览器不能测试 post 接口 
router.post("/post",(req,res)=>{
  res.send("这是一个post 请求接口 ")
})


router.post("/submit",(req,res)=>{
  console.log(req.body)
  res.json({
    code:200,
    msg:"提交成功",
    result:null,
    body:req.body  // post 请求提交的数据体 
  })
})
module.exports = router;
